﻿using System;

namespace TetrisGame
{
    internal abstract class BaseScene : IUpdateScene
    {
        protected int nowSceneIndex = 0; // 当前场景索引
        protected string title; // 场景标题
        protected string start;// 场景开始提示

        // 确认回车键逻辑
        public abstract void PrassEnterKey();

        // 更新方法，所有场景都需要实现
        public void Update()
        {
            // 开始和结束场景的逻辑
            // 设置字体颜色
            Console.ForegroundColor = ConsoleColor.White;
            // 标题
            Console.SetCursorPosition(Game.Width / 2 - title.Length / 2, 3); // 居中显示标题
            Console.Write(title); // 显示标题
            // 开始提示
            Console.SetCursorPosition(Game.Width / 2 - start.Length / 2, 6); // 居中显示提示
            Console.ForegroundColor = nowSceneIndex == 0 ? ConsoleColor.Green : ConsoleColor.White; // 设置选中标题为绿色
            Console.Write(start); // 显示开始提示
            // 退出提示
            Console.SetCursorPosition(Game.Width / 2 - 2, 8); // 居中显示提示
            Console.ForegroundColor = nowSceneIndex == 1 ? ConsoleColor.Green : ConsoleColor.White; // 设置选中标题为绿色
            Console.Write("Quit"); // 显示开始提示

            // 处理输入
            var key = Console.ReadKey(true).Key; // 读取按键输入
            switch (key)
            {
                case ConsoleKey.UpArrow: // 上箭头
                    nowSceneIndex = 0; // 设置为开始场景
                    break;

                case ConsoleKey.DownArrow: // 下箭头
                    nowSceneIndex = 1; // 设置为退出场景
                    break;

                case ConsoleKey.Enter: // 回车键
                    PrassEnterKey(); // 处理回车键逻辑
                    break;
            }
        }
    }
}